#include<cstdio>
#include<cstring>
#include<queue>
#define CC(A,x) memset(A,x,sizeof(A));

using namespace std;

const int maxn=10005;
const int KIND=26;
const int maxm=1000005;
const int maxnode=maxn*25;

int chd[maxnode][KIND],fail[maxnode],id[maxnode],C;

int t,n,ans;

void init()
{
	CC(chd,0);
	CC(fail,0);
	CC(id,0);
	C=1;
	ans=0;
}

void insert(char *ch)
{
	int i=0;
	int p=0,t;
	while(ch[i])
	{
		t=ch[i]-'a';
		if(!chd[p][t])chd[p][t]=C++;
		p=chd[p][t];
		i++;
	}
	id[p]++;
}

void AC()
{
	int q[maxnode*2];
	int l=1,r=1;
	q[1]=0;
	while(l<=r)
	{
		int t=q[l];
		int p=0;
		l++;
		for(int i=0;i<KIND;i++)
		{
			if(chd[t][i])
			{
				p=fail[t];
				while(p)
				{
					if(chd[p][i])
					{
						fail[chd[t][i]]=chd[p][i];
						break;
					}
					p=fail[p];
				}
				if(!p)
				{
					if(t!=0&&chd[p][i])fail[chd[t][i]]=chd[p][i];
				}
				r++;
				q[r]=chd[t][i];
			}
		}
	}
}

void match(char *ch)
{
	int i=0,t,p=0,temp;
	while(ch[i])
	{
		t=ch[i]-'a';
		while(!chd[p][t]&&p!=0)p=fail[p];
		p=chd[p][t];
		temp=p;
		while(temp)
		{
			ans+=id[temp];
			id[temp]=0;
			temp=fail[temp];
		}
		i++;
	}

}
int main()
{
	scanf("%d",&t);
	while(t--)
	{
		scanf("%d",&n);
		init();
		for(int i=1;i<=n;i++)
		{
			char ch[55];
			scanf("%s",ch);
			insert(ch);
		}
		AC();
		char ch[maxm];
		scanf("%s",ch);
		match(ch);
		printf("%d\n",ans);
	}
	return 0;
}
